home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Network Supervisor's Toolkit
/
Network Supervisor's Toolkit.iso
/
e-mail
/
wanchat
/
wanchat.doc
< prev
next >
Wrap
Text File
|
1996-07-10
|
18KB
|
397 lines
WANCHAT V1.00B by Stephan A. Edelman
NetLink Online Information Services
(C) 1994. All Rights Reserved. Shareware Version
-------------------------------------------------------------------------
DISCLAIMER:
EXCEPT AS RESTRICTED BY LAW, THE SOFTWARE PROGRAMS CONTAINED IN THIS
ARCHIVE ARE PROVIDED "AS IS" WITHOUT ANY WARRANTY OF ANY KIND, EITHER
EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED
WARRANTIES OF MERCHANTABILITY, TITLE OR FITNESS FOR A PARTICULAR
PURPOSE. YOU MAY WITHOUT CHARGE, REPRODUCE AND DISTRIBUTE COPIES OF
THIS ARCHIVE PROVIDED YOU DO NOT (1) RECEIVE ANY DIRECT PAYMENT,
COMMERCIAL BENEFIT, OR OTHER CONSIDERATION FOR THE REPRODUCTION,
DISTRIBUTION OR USE, OR DISTRIBUTE THIS ARCHIVE AS PART OF OR IN
COMBINATION WITH ANY OTHER SOFTWARE OR HARDWARE PRODUCT WITHOUT THE
PRIOR WRITTEN CONSENT OF NETLINK ONLINE INFORMATION SERVICES.
(2) CHANGE OR OMIT ANY PROPRIETARY RIGHTS NOTICE APPEARING IN THE FILES
CONTAINED IN THE ARCHIVE.
-------------------------------------------------------------------------
Motivation
==========
The WANCHAT program was a direct result of a similar network 'chat' program
developed by L. Brett Glass in 1988, called NETCHAT(tm). NETCHAT(tm) was
designed to operate in a NETBIOS environment and allowed multiple users
to communicate or 'chat' with each other in a conference type of session.
This program worked very well, and, as a matter of fact, we utilized it
to test wide-area-network communications across our router. However, we
are presently removing NETBIOS support from our workstations which renders
the NETCHAT(tm) program useless. The need arose to have a similar 'chat'
program which would use native netware IPX. We searched the various
libraries such as NOVLIB and NOVUSR on CompuServe, as well as the FTP
archive of OAK.OAKLAND.EDU. We came to the conclusion that a 'chat'
program similar to NETCHAT(tm) was not available for netware IPX. The
programs that were available, either would not pass through our routers,
or would only allow a maximum of two (2) people to chat at a time. We set
out to develop our own 'chat' program using the Novell Network C interface
for DOS, with the following guidelines:
(1) Allow multiple people to chat with each other
(2) Provide for multiple channels
(3) Allow it to function in a multi-server, multi-network
environment
(4) Function in a Netware Lite(tm) environment
We believe that WANCHAT has conformed to these requirements, and we hope
that you will find it useful.
Getting Started
===============
WANCHAT is, in many ways, similar to the popular Internet-Relay-Chat (IRC)
client on the internet. There are a number of command line parameters,
each of these parameters are be described below:
WANCHAT <channel no> [<username>,<username>,...] [/NET ADDRESS]
The CHANNEL NO refers to the channel that you will be starting a 'chat'
session on. You can select any number ranging from 0 to 99. IPX 'chat'
traffic directed towards a particular channel will not interfere with
'chat' traffic on any other channel. The USERNAME field is optional and
identifies a user that you wish to chat with. You can specify multiple
users by separating them with a comma (,). Do *NOT* use any spaces in
between the usernames. WANCHAT will then send a Novell message to these
users identified on the command line. It must be noted that the users
specified must exist on the default fileserver and you must be attached
(or logged-in) to this fileserver. The following message
will be sent to these users:
STEPHAN would like to chat with you on channel X (CTRL-ENTER to clear)
The next optional switch identifies an additional network to send IPX 'chat'
packets to. This is required if you wish to chat with somebody on another
network. It must be noted that the networks must be connected (or bridged)
by means of a router, and, the router must pass through IPX broadcast
packets.
For example:
WANCHAT 1 STEPHAN,JOHN /1000FF10
This will notify users STEPHAN and JOHN, start a 'chat' session on channel
one and also echo 'chat' traffic to network 1000FF10. Before WANCHAT enters
the 'chat' mode, it lists the results of the send message. If the specified
users are not logged in, then you have the option of exiting WANCHAT before
starting a 'chat' session. Something similar to that shown below will be
displayed:
C:> WANCHAT 1 STEPHAN,JOHN
Message sent to STEPHAN (Station 13)
Message NOT sent to STEPHAN (Station 14)
user JOHN not logged in
Press [ESC] to quit, any other key to continue.
It must be noted that you should *NOT* specify usernames on the command-
line when you are not logged in, or, when you do not have access to
bindery services as in the case of Netware Lite(tm).
Beginning a Chat Session
========================
Once you have specified your required parameters on the command-line,
a chat session will be started. If you are logged in to a novell network,
your username and identity (usually your first and last name) will be
retrieved from the server's bindery. If you are not logged in, or, you
are running Netware Lite(tm), you will be required to enter in a username.
In this case, you can select any username you desire. The screen is cleared
and you will have a flashing cursor at the bottom of your screen. The
current channel number will be displayed as well as the current topic.
Any text that you type (up to 66 characters) followed by the [ENTER] key
will be broadcast to all users on that channel. You will see your username
appear on the screen, followed by a colon and the text that you typed.
Everything that is displayed above the 'topic' bar is what is received
from the network on that channel. You have a number of options:
(F1) Channels - Allows changing of the channel
(F2) Topic - Allows changing of the topic
(F3) Handle - Allows changing of your current username
(ESC) Exit - Terminates the 'chat' session
Each of the above listed options will be briefly described below.
o Channels
When you press the [F1] key during a 'chat' session,
the text 'Channel x>' will be replaced by 'Enter new channel>'
at this point you can enter any value ranging from 0 to 99.
When you select a channel other than the one that you were
already on, WANCHAT will broadcast the following message to
the users on the previous channel:
--> User STEPHAN (Stephan Edelman) has left this channel (x)
The following message will be broadcast to the users on the
channel that you are joining:
--> User STEPHAN (Stephan Edelman) has joined channel x
This notifies the users of that channel that you are joining
in and wish to chat with them.
o Topic
When you press the [F2] key during a 'chat' session,
the text 'Channel x>' will be replaced by the text 'Enter
new topic>', at this point you can enter any text up to
30 characters in length. Once you have pressed this key,
you are forced to enter in a new topic. The following message
will be sent to all the users on your channel:
--> The topic has been changed to 'NEW TOPIC' by STEPHAN
The change in topic will also be reflected by the status bar
in the lower left hand corner of the screen.
o Handle
When you press the [F3] key during a 'chat' session,
the text 'Channel x>' will be replaced by the text 'Enter
new handle>', at this point you can enter any text up to 30
characters in length. Once you have pressed this key,
you are forced to enter in a new handle for your username.
The following message will be sent to all the users on your
channel:
--> User STEPHAN (Stephan Edelman) is now known as 'Edelman'
o Exit
When you press the [ESC] key during a 'chat' session, your
'chat' session will be immediately terminated. You will *NOT*
be asked to confirm leaving of your channel. The following
message will be sent to all users on your channel:
--> User STEPHAN (Stephan Edelman) has left this channel (x)
'Chatting' on a WAN
===================
When you do not specify a destination network (using the /xxxxxxxx option),
'chat' packets originated by you will remain within the same network
(i.e., will not cross routers). However, when another user on another
network has started up WANCHAT with your network number specified on the
command-line, packets will be sent to your network as well as his own.
For example, user A is on network 1000 and has started WANCHAT on channel
one (WANCHAT 1). He will be sending IPX 'chat' packets on network 1000 only.
User B is on network 1001 and has started WANCHAT on channel one and
specified /1000 on the command-line. The moment this user started WANCHAT
on channel one (WANCHAT 1 /1000) a message was broadcast to both networks
(1000 and 1001) indicating user B's presence on that channel. At this
time, the network table maintained by user A will be updated to include
sending out 'chat' packets to the users on network 1001. This is accomplished
by including the network number as part of the 'chat' packet. Every incoming
packet is examined for new network addresses and the internal network table
maintained by WANCHAT is updated. In addition, a RIP like packet (in terms
of its function) is being broadcast by all users running WANCHAT every 30
seconds. This allows networks several 'hops' away to also start a chat
session with several users on different networks. The RIP (routing
information packet) contains all of the network addresses that our known
to a particular WANCHAT user. If a RIP packet is received that contains
more networks than another WANCHAT user knows about, it will add the
new network to the internal network name table. This will cause all
WANCHAT users to eventually know about all the networks that contain
WANCHAT users.
Example 1:
----------
USER 1 USER 2 USER 3 USER 4
[1000] [1001] [1002] [1003]
In order to have all four users 'chat' with each other, they must all
specify a 'common' destination address. For instance, USER 1, USER 2
and USER 4 would all specify the same network address of 1002.
This means that USER 2 can both send and receive packets to/from USER 1,
USER 3 and USER 4. USER 1, USER 3 and USER 4 can all receive 'chat'
packets from USER 2, but not individually between USER 3 and USER 4, or
USER 1 and USER 3, etc. This is due to the fact that USER 3 does not
know about USER 2's network, USER 4 does not know about USER 3's network,
etc. Only USER 2 knows about all the networks out there, it will send out
a periodic RIP packet that will include the destination network of all of
the networks it knows about, therefore, eventually all networks running
WANCHAT will know about each other.
Example 2:
----------
One user is running WANCHAT on channel one and has specified an additional
network where 'chat' packets should be broadcast to. There are no other
users on the remote network that are running WANCHAT, so this user's
identification notification (--> User XXX has joined channel 1) is sent out
in vain. This user does not type anything in, but leaves WANCHAT running.
Two new users on the remote network start-up WANCHAT and do not specify
a network address, in other words, they are not interested in sending
'chat' packets out, other than to their own network. Each of these two
stations will send out RIP packets every 30 seconds, however, because no
remote address was specified, the RIP packets will not contain any
additional networks. The one user on the remote network will also send out
RIP packets every 30 seconds, which will be received by the two stations,
which, in turn will update their table. As soon as these two stations
see that another network is present, they will each send out the
message --> USER XXXX has joined channel 1, to indicate to the one remote
user that two additional users have been added to the WANCHAT.
In each of the above cases, whenever a identification notification is
sent, the receiving stations will immediately broadcast the topic
for that channel to the new station.
Technical Information
=====================
The channel number specified in WANCHAT is used as an offset to the base
socket number of 0x4100, which is used for communicating 'chat' packets
across the network. In other words, when a particular user specifies channel
one (1), then socket number 0x4101 will be used for sending and receiving.
The 'chat' packets are made up of the following data:
Offset 00h Network address
4-byte address of the network that
originated the packet.
Offset 04h Packet Type Identifier
10h IS_CHANNEL_IN_USE
11h CHANNEL_IS_IN_USE
12h TOPIC_PACKET
13h NEW_USER_PACKET
14h RIP_PACKET
15h DATA_PACKET
Offset 05h - 100h Message Data
The message data contains the message that
the user sent out, if the Packet Type
identifier (offset 04h) was set to
DATA_PACKET.
Packet Type Identifier
======================
The packet type identifier indicates to the receiver of the packet, what
the contents of the packet refer to. The following structures should be
expected for each of the different Packet Type Identifiers:
(10h) IS_CHANNEL_IN_USE
This packet is sent out by WANLIST to query what channels are being used
on the network. The Message DATA portion is ignored and generally left
blank. The reply to this query is given by the CHANNEL_IS_IN_USE packet.
(11h) CHANNEL_IS_IN_USE
This packet is sent out by *ALL* WANCHAT users when a IS_CHANNEL_IN_USE
packet is received. The message portion of the CHANNEL_IS_IN_USE packet
should contain a NULL terminated string referring to the present TOPIC
of that channel.
(12h) TOPIC_PACKET
This packet is sent out by a WANCHAT user who has changed the current topic
of conversation on a particular channel. The message portion contains a
NULL terminated string with the new topic. The topic string should not be
any larger than 28 bytes. It must be noted that this changes the topic
indicated in the lower left hand corner of WANCHAT. It does *NOT* notify
users of a TOPIC change. This is accomplished by sending out a separate
broadcast data packet with the message --> topic has been changed
by XXXXXX to 'XXXXX'.
(13h) NEW_USER_PACKET
This packet is sent out whenever a new user enters a new channel.
The response to this packet from other WANCHAT users is to automatically
send out the topic for channel. The message data contains the text
--> User xxxx (XXXX XXXX) has joined channel x.
(14h) RIP_PACKET
This packet is broadcast every 30 seconds by every WANCHAT user. The
first byte of the message data should contain the number of networks (N)
that are represented by the data packet. The next four bytes are the
first network number, the next four bytes are the next network number.
This continues for a total of N networks.
(15h) DATA_PACKET
The data packet contains the message that will be broadcast to all
the WANCHAT users and directly displayed on the screen. The message
should not be any larger than 66 bytes.
This concludes the Technical Information section, if you have any questions
regarding the functionality of WANCHAT, bug reports, suggestions or
donations, please feel free to contact me at one of the addresses
listed below.
Bugs and Shortcomings
=====================
(1) WANCHAT incorporates duplicate packet suppression. This was deemed
necessary due to the fact that our router occasionally would echo
packets back that were sent across it. This would manifest
itself as two identical messages displayed on the user's screen.
A packet having the same information as received in the previous
packet will not be displayed if it arrived less than 165ms after
the first packet. This just means that you can not send messages
faster than 6 packets/sec when they are identical messages(!).
Generally, this is not a problem, due to the fact that it takes
longer than 165ms to type in a message.
(2) WANCHAT uses IPX for communication. IPX is a connectionless or
datagram oriented, this means that there is no guarantee of
delivery to the destination. When running under Windows the
occasional packet gets corrupted due to the control of IPX
Int 7Ah by Windows. I have not yet dug into the Windows Resource
Reference to find a way to provide more processing time for IPX.
It is therefore strongly discouraged to run this program under
Windows.
If you find this program useful, I would appreciate a small donation of
$10/network. This will encourage me to find time to improve some of the
short-comings or to implement additional functionality.
Paper Mail:
Stephan Edelman
1862 Westgrove Drive
Bright's Grove, Ontario
N0N 1C0 Canada
Electronic Mail:
Internet: stephan.edelman@netlink.on.ca
stephan.edelman@linet.netlink.on.ca
CompuServe: 72303,1607
/Mar 6, 1994